Large software system projects have a relatively high probability of failure, as reported in Jones, C, Patterns of Software System Failure and Success, International Thomson Computer Press, London, 1996. Jones analyzes the various reasons why and how software projects fail, but does not offer practical tools that may be used to avoid project failure.
Further, testing of software in large software projects is also a difficult task. While techniques exist for testing large software systems, these techniques have various associated implementations problems.
Design documents are typically prepared for large software system projects. Actual coding commences with reference to such design documents and such documents are cross-referenced during coding. This general approach assists in managing large projects, but is not wholly or universally satisfactory.
Despite the use of various procedures, many software systems develop serious problems during development. Accordingly, a need clearly exists for improved techniques for designing, testing and maintaining software systems.